n = int(input())    #n行n列
mp = []            #地图信息
for i in range(n):
    row = list(map(int,input().split()))
    mp.append(row)
dir = [(-1,0),(1,0),(0,-1),(0,1),(-1,-1),(-1,1),(1,-1),(1,1)]   #上下左右，偏移量
cnt = 0
#从位置p开始深搜
def backtracking(r,c):
    global n,mp,dir,cnt
    if r == 0 and c == n - 1:  #到达终点右上角
        cnt += 1
        return
    #从当前位置开始向4个方向搜索
    for i in range(8):
        nr = r + dir[i][0] #行
        nc = c + dir[i][1] #行
        if nr >= 0 and nr < n and \
            nc >= 0 and nc < n and mp[nr][nc] == 0:
            mp[nr][nc] = 1        #当前位置设置为墙
            backtracking(nr,nc)   #继续搜索
            mp[nr][nc] = 0

mp[0][0] = 1    #起点已经走过了，改成墙
backtracking(0,0)
print(cnt)